# 导入tool函数装饰器
from langchain.agents import tool, initialize_agent
from datetime import date
from langchain_openai import AzureChatOpenAI
from tool import get_azure_endpoint,get_api_key,get_api_version
from langchain.agents import AgentType
@tool
def time(text: str) -> str:
    """
    返回今天的日期，用于任何需要知道今天日期的问题。\ 输入应该总是一个空字符串，\ 这个函数将总是返回今天的日期，任何日期计算应该在这个函数之外进行。 """
    return str(date.today())

if __name__ == '__main__':
    # 参数temperature设置为0.0，从而减少生成答案的随机性。
    llm = AzureChatOpenAI(
        azure_endpoint=get_azure_endpoint().rstrip('/'),  # 移除尾部斜杠，只保留基础URL
        azure_deployment="gpt-4o",  # 重命名为 azure_deployment
        model_name="gpt-4o",
        openai_api_version=get_api_version(),  # 参数名不变
        openai_api_key=get_api_key(),
        openai_api_type="azure",
        temperature=0.0,
    )
    # 初始化代理
    agent = initialize_agent(
        tools=[time],  # 将刚刚创建的时间工具加入代理
        llm=llm,  # 初始化的模型
        agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, #代理类型
        handle_parsing_errors=True, #处理解析错误
        verbose=True  # 输出中间步骤
    )
    # 使用代理询问今天的日期.
    # 注: 代理有时候可能会出错(该功能正在开发中)。如果出现错误，请尝试再次运行它。
    reponse = agent("今天的日期是?")
    print(reponse)
